<!-- mini播放器中的圆形进度 -->
<template>
  <div class="progress-circle">
    <!-- svg标签 -->
    <!-- viewBox的值视口的位置这里是从(0,0)拉到(100,100)区域 -->
    <svg :width="radius" :height="radius" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <!-- 这个circle是内层的圆，这个r是半径，cx和cy是圆心坐标 -->
      <circle class="progress-background" r="50" cx="50" cy="50"/>
      <!-- 这个circle是外层的圆，stroke-dasharray表示描边距离或者说是周长,stroke-dashoffset表示描边的偏移距离 -->
      <circle class="progress-bar" r="50" cx="50" cy="50" fill="transparent" :stroke-dasharray="dashArray" :stroke-dashoffset="dashOffset"/>
    </svg>
    <slot></slot>
  </div>
</template>
<script>
export default {
  props: {
    // svg的宽度或者高度，因为这里宽高一样
    radius: {
      type: Number,
      default: 100
    },
    // 播放比例
    percent: {
      type: Number,
      default: 0
    }
  },
  data () {
    return {
      // Π乘以半径乘以2是计算周长
      dashArray: Math.PI * 100
    }
  },
  computed: {
    // 表示进度走的多少
    dashOffset () {
      // 当dashOffset为最大值的时候，是显示开始，dashOffset这个是0的时候，是显示结束
      return (1 - this.percent) * this.dashArray
    }
  }
}
</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
  @import "~common/stylus/variable"

  .progress-circle
    position: relative
    circle
      stroke-width: 8px
      transform-origin: center
      &.progress-background
        transform: scale(0.9)
        stroke: $color-theme-d
      &.progress-bar
        transform: scale(0.9) rotate(-90deg)
        stroke: $color-theme
</style>
